package ObjectDemo1;

/**
 * Created with IntelliJ IDEA.
 * Description:关于浅拷贝和深拷贝
 * User: 阿宾
 * Date: 2024-10-17
 * Time: 16:01
 */
//Cloneable
//如果一个接口里面没有抽象方法
//表示当前的接口是一个标记性接口
//现在Cloneable表示一旦实现了，那么当前类的对象就可以被克降
//如果没有实现，当前类的对象就不能克隆
public class User implements Cloneable {
    public int id;
    public String name;
    public int[] data;

    public User() {
    }

    public User(int id, String name, int[] data) {
        this.id = id;
        this.name = name;
        this.data = data;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    /*@Override
    protected Object clone() throws CloneNotSupportedException {
//        return super.clone();
        //先把被克隆对象中的数组获取出来
        int[] data = this.data;
        //创建新的数组
        int[] newData =new int[data.length];
        //拷贝数组中的数据
        for (int i = 0; i < data.length; i++) {
            newData[i] = data[i];
        }
        //调用父类中的方法克隆对象
        User u=(User)super.clone();
        //因为父类中的克隆方法是浅克隆，替换克隆出来对象中的数组地址值
        u.data =newData;
        return u;
    }*/
}
